package com.example.springaiollama.service;

import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;

@Service
public class FunctionCallingService {

    /**
     * 获取当前时间
     */
    public String getCurrentTime() {
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        return now.format(formatter);
    }

    /**
     * 计算器功能
     */
    public String calculate(String expression) {
        try {
            // 简单的数学表达式计算
            // 注意：这里使用简单的计算逻辑，生产环境建议使用更安全的表达式解析器
            String sanitized = expression.replaceAll("[^0-9+\\-*/().\\s]", "");
            // 这里可以集成更安全的表达式计算库
            return "计算结果: " + sanitized + " (请使用安全的表达式计算库)";
        } catch (Exception e) {
            return "计算错误: " + e.getMessage();
        }
    }

    /**
     * 天气查询模拟
     */
    public String getWeather(String city) {
        // 模拟天气数据
        Map<String, String> weatherData = new HashMap<>();
        weatherData.put("北京", "晴天，温度 25°C，湿度 60%");
        weatherData.put("上海", "多云，温度 28°C，湿度 70%");
        weatherData.put("广州", "小雨，温度 30°C，湿度 80%");
        weatherData.put("深圳", "晴天，温度 29°C，湿度 65%");
        
        return weatherData.getOrDefault(city, "未找到 " + city + " 的天气信息");
    }

    /**
     * 翻译功能
     */
    public String translate(String text, String targetLanguage) {
        // 简单的翻译模拟
        if ("中文".equals(targetLanguage) || "Chinese".equals(targetLanguage)) {
            return "翻译结果: " + text + " (中文翻译)";
        } else if ("英文".equals(targetLanguage) || "English".equals(targetLanguage)) {
            return "Translation: " + text + " (English translation)";
        }
        return "不支持的翻译语言: " + targetLanguage;
    }

    /**
     * 文件操作模拟
     */
    public String readFile(String filePath) {
        // 模拟文件读取
        return "文件内容: " + filePath + " (模拟读取的文件内容)";
    }

    /**
     * 网络请求模拟
     */
    public String httpRequest(String url, String method) {
        // 模拟HTTP请求
        return "HTTP " + method + " 请求 " + url + " 的响应数据 (模拟)";
    }

    /**
     * 获取所有可用工具的描述
     */
    public Map<String, String> getAvailableTools() {
        Map<String, String> tools = new HashMap<>();
        tools.put("getCurrentTime", "获取当前系统时间");
        tools.put("calculate", "执行数学计算，支持加减乘除等基本运算");
        tools.put("getWeather", "获取指定城市的天气信息");
        tools.put("translate", "翻译文本，支持中英文互译");
        tools.put("readFile", "读取指定文件的内容");
        tools.put("httpRequest", "发送HTTP请求获取数据");
        return tools;
    }
} 